﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CentroVentas.Forms.Categorias
{
    /// <summary>
    /// Lógica de interacción para FrmCategorias.xaml
    /// </summary>
    public partial class FrmCategorias : Page
    {
        public FrmCategorias()
        {
            InitializeComponent();
        }

        private int _item = 0; 

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            IdCategoria.Width = 0;
            NombreCategoria.Width = CategoriasList.ActualWidth;
            GetCategorias();
        }

        private void btnAddCategoria_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtNombreCategoria.Text))
            {
                MessageBox.Show("Debe escribir un nombre");
                txtNombreCategoria.Focus();
            }
            else
            {
                if (!CVCore32.Class.Funciones.Productos.Categoria.ExisteCategoria(txtNombreCategoria.Text))
                {
                    try
                    {
                        CVCore32.Class.Funciones.Productos.Categoria.CrearCategoria(txtNombreCategoria.Text);
                        GetCategorias();
                    }
                    catch (Exception ex)
                    {
                        GetCategorias();
                        MessageBox.Show(ex.Message);
                    }   
                }
                else
                {
                    GetCategorias();
                    MessageBox.Show("Categoria ya existe");
                    txtNombreCategoria.Focus();
                }
            }
        }

        private void btnAddSubcategoria_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtNombreSubCategoria.Text))
            {
                MessageBox.Show("Debe escribir un nombre");
                txtNombreSubCategoria.Focus();
            }
            else
            {                
                if (!CVCore32.Class.Funciones.Productos.Categoria.ExisteSubCategoria(txtNombreSubCategoria.Text, _item))
                {
                    try
                    {
                        CVCore32.Class.Funciones.Productos.Categoria.CrearSubCategoria(txtNombreSubCategoria.Text, _item);
                        GetCategorias();
                    }
                    catch (Exception ex)
                    {
                        GetCategorias();
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    GetCategorias();
                    MessageBox.Show("SubCategoria ya existe");
                    txtNombreCategoria.Focus();
                }
            }
        }



        private void GetCategorias()
        {
            CategoriasList.Items.Clear();
            List<CVCore32.Data.CategoriaProducto> cat = CVCore32.Class.Funciones.Productos.Categoria.GetCategorias();

            foreach (CVCore32.Data.CategoriaProducto catitem in cat)
            {
                CategoriasList.Items.Add(new { catitem.IdCategoria, catitem.NombreCategoria });
            }
            CategoriasList.SelectedIndex = 0;

           
        }

        private void CategoriasList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            SubcategoriasList.Items.Clear();
            IdSubCategoria.Width = 0;
            NombreSubCategoria.Width = SubcategoriasList.ActualWidth - 5;

            String asas;
            try
            {
                asas = CategoriasList.SelectedItem.ToString();
                asas = asas.Replace(", ", "\",\"");
                asas = asas.Replace("{ ", "{\"");
                asas = asas.Replace(" = ", "\":\"");
                asas = asas.Replace(" }", "\"}");
                List<string> aaa = CVCore32.Class.Funciones.Proveedores.Proveedor.LeerProveedorJson(asas);
                _item = Convert.ToInt32(aaa[0]);
                List<CVCore32.Data.SubcategoriaProducto> cate = CVCore32.Class.Funciones.Productos.Categoria.GetSubCategorias(Convert.ToInt32(aaa[0]));

                foreach (CVCore32.Data.SubcategoriaProducto catitem in cate)
                {
                    SubcategoriasList.Items.Add(new { catitem.IdSubcategoria, catitem.NombreSubcategoria });
                }
                SubcategoriasList.SelectedIndex = 0;
            }
            catch (Exception)
            {
                List<CVCore32.Data.SubcategoriaProducto> cate = CVCore32.Class.Funciones.Productos.Categoria.GetSubCategorias(CVCore32.Class.Funciones.Productos.Categoria.GetFirstItemCategoria());

                foreach (CVCore32.Data.SubcategoriaProducto catitem in cate)
                {
                    SubcategoriasList.Items.Add(new { catitem.IdSubcategoria, catitem.NombreSubcategoria });
                }
                SubcategoriasList.SelectedIndex = 0;
            }
        }


    }
}
